<?php if (!defined('ITPK')) exit('You can not directly access the file.');

/**
 * 机器人插件抽象类
 * @author 冬天的秘密
 * @link http://bbs.itpk.cn
 * @version 1.0
 */

class AbstractpluginHandler extends WebDBConnection {

	protected $robot_uin;
	protected $msg;
	protected $webGroup;
	protected $qqPer;
	protected $runlogPer;
	protected $groupmemberPer;
	protected $pluginPer;

	/**
	 * 初始化
	 * @param string $robot_uin 机器人账号
	 * @param string $msg 接收到的消息
	 * @param array $webGroup 群成员信息
	 * @param WebqqPer $qqPer 机器人操作类（数据库操作）
	 * @param WebrunlogPer $runlogPer 运行记录类
	 * @param WebgroupmemberPer $groupmemberPer 群成员操作类
	 * @param WebPluginPer $pluginPer 插件操作类
	 */
	public function init($robot_uin, $msg, $webGroup, $qqPer, $runlogPer, $groupmemberPer, $pluginPer) {
		$this->robot_uin = $robot_uin;
		$this->msg = $msg;
		$this->webGroup = $webGroup;
		$this->qqPer = $qqPer;
		$this->runlogPer = $runlogPer;
		$this->groupmemberPer = $groupmemberPer;
		$this->pluginPer = $pluginPer;
	}

	/**
	 * 判断发送消息的人是不是机器人创建者
	 * @return boolean
	 */
	public function is_permissions() {
		/**
		 * 获取机器人的创建者QQ号
		 */
		$createUin = $this->qqPer->getCreateUinByUin($this->robot_uin);
		/**
		 * 如果相等则拥有权限
		 */
		return ($this->webGroup == null || $this->webGroup['member_uin'] == $createUin) ? true : false;
	}

	/**
	 * 根据标记和Name获取存储的值
	 * @param string $mark
	 * @param string $name
	 * @param unknown $default_value
	 * @return unknown
	 */
	public function getValueByName($mark, $name, $default_value = null) {
		$meta = $this->db->executeQuery("SELECT value FROM web_system WHERE mark = '{$mark}' AND name = '{$name}' LIMIT 1", true);
		return $meta ? $meta['value'] : $default_value;
	}

	/**
	 * 保存标记的值
	 * @param string $mark
	 * @param string $name
	 * @param string $value
	 * @return boolean
	 */
	public function replaceSys($mark, $name, $value) {
		return $this->db->executeQuery("REPLACE INTO web_system(mark, name, value) VALUES('{$mark}', '{$name}', '{$value}')") > 0 ? true : false;
	}

}
?>